<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>动态组件</title>
		<style>
			.tab-button {
				padding: 6px 10px;
				border-top-left-radius: 3px;
				border-top-right-radius: 3px;
				border: 1px solid #ccc;
				cursor: pointer;
				background: #f0f0f0;
				margin-bottom: -1px;
				margin-right: -1px;
			}

			.tab-button:hover {
				background: #e0e0e0;
			}

			.tab-button.active {
				background: #e0e0e0;
			}

			.tab {
				border: 1px solid #ccc;
				padding: 10px;
			}
		</style>
	</head>
	<body>
		<div id="app">
			<button
				v-for="tab in tabs"
				v-bind:key = "tab"
				v-bind:class="['tab-button',{active:currentTab === tab}]"
				v-on:click="currentTab = tab"
			>
				{{tab}}
			</button>
			<component v-bind:is="currentTabComponent" class="tab"></component>
		</div>
	</body>
	<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
	<script>
		Vue.component('tab-home',{
			template:'<div>Home component</div>'
		});
		Vue.component('tab-posts',{
			template:'<div>Posts component</div>'
		});
		Vue.component('tab-archive',{
			template:'<div>Archive component</div>'
		});
		var vm = new Vue({
			el: '#app',
			data: {
				currentTab: 'Home',
				tabs: ['Home', 'Posts', 'Archive'],
			},
			computed:{
				currentTabComponent:function(){
					return "tab-"+this.currentTab.toLowerCase();
				}
			}
		})
	</script>
</html>